package com.saep.vista;

import com.saep.logica.LogicaEmpresaLocal;
import com.saep.modelo.Empresa;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author DianaMarcela
 */
@ManagedBean(name = "empresaVista")
@RequestScoped
public class EmpresaVista {

    @EJB
    private LogicaEmpresaLocal logicaEmpresa;

    private InputText txtNumeroEmpresa;
    private InputText txtNombreEmpresa;
    private InputText txtDireccionEmpresa;
    private InputText txtTelefonoEmpresa;
    private CommandButton btnRegistra;
    private CommandButton btnEliminar;
    private CommandButton btnModificar;
    private CommandButton btnLimpiar;
    private Empresa selectEmpresa;
    private List<Empresa> listaEmpresa;

    public EmpresaVista() {
    }

    public LogicaEmpresaLocal getLogicaEmpresa() {
        return logicaEmpresa;
    }

    public void setLogicaEmpresa(LogicaEmpresaLocal logicaEmpresa) {
        this.logicaEmpresa = logicaEmpresa;
    }

    public InputText getTxtNumeroEmpresa() {
        return txtNumeroEmpresa;
    }

    public void setTxtNumeroEmpresa(InputText txtNumeroEmpresa) {
        this.txtNumeroEmpresa = txtNumeroEmpresa;
    }

    public InputText getTxtNombreEmpresa() {
        return txtNombreEmpresa;
    }

    public void setTxtNombreEmpresa(InputText txtNombreEmpresa) {
        this.txtNombreEmpresa = txtNombreEmpresa;
    }

    public InputText getTxtDireccionEmpresa() {
        return txtDireccionEmpresa;
    }

    public void setTxtDireccionEmpresa(InputText txtDireccionEmpresa) {
        this.txtDireccionEmpresa = txtDireccionEmpresa;
    }

    public InputText getTxtTelefonoEmpresa() {
        return txtTelefonoEmpresa;
    }

    public void setTxtTelefonoEmpresa(InputText txtTelefonoEmpresa) {
        this.txtTelefonoEmpresa = txtTelefonoEmpresa;
    }

    public CommandButton getBtnRegistra() {
        return btnRegistra;
    }

    public void setBtnRegistra(CommandButton btnRegistra) {
        this.btnRegistra = btnRegistra;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public Empresa getSelectEmpresa() {
        return selectEmpresa;
    }

    public void setSelectEmpresa(Empresa selectEmpresa) {
        this.selectEmpresa = selectEmpresa;
    }

    public List<Empresa> getListaEmpresa() {
        if (listaEmpresa == null) {
            try {
                listaEmpresa = logicaEmpresa.consultarEmpresas();
            } catch (Exception ex) {
                Logger.getLogger(EmpresaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        return listaEmpresa;
    }

    public void setListaEmpresa(List<Empresa> listaEmpresa) {
        this.listaEmpresa = listaEmpresa;
    }

    //Metodos CRUD
    public void funcionLimpiar() {
        txtNumeroEmpresa.setValue("");
        txtNombreEmpresa.setValue("");
        txtDireccionEmpresa.setValue("");
        txtTelefonoEmpresa.setValue("");
        btnRegistra.setDisabled(false);
        btnModificar.setDisabled(true);
        btnEliminar.setDisabled(true);
    }

    public void funcionRegistrar() {
        try {
            Empresa empresa = new Empresa();
            empresa.setNumeroempresa(Integer.parseInt(txtNumeroEmpresa.getValue().toString()));
            empresa.setNombreempresa(txtNombreEmpresa.getValue().toString());
            empresa.setDireccionempresa(txtDireccionEmpresa.getValue().toString());
            empresa.setTelefonoempresa(txtTelefonoEmpresa.getValue().toString());
            logicaEmpresa.registrarEmpresa(empresa);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "La empresa se registró con exito"));
        } catch (Exception ex) {
            Logger.getLogger(EmpresaVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
        }
        listaEmpresa = null;
        funcionLimpiar();

    }

    public void funcionModificar() {
        try {
            Empresa empresa = new Empresa();
            empresa.setNumeroempresa(Integer.parseInt(txtNumeroEmpresa.getValue().toString()));
            empresa.setNombreempresa(txtNombreEmpresa.getValue().toString());
            empresa.setDireccionempresa(txtDireccionEmpresa.getValue().toString());
            empresa.setTelefonoempresa(txtTelefonoEmpresa.getValue().toString());
            logicaEmpresa.modificarEmpresa(empresa);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "La empresa se modificó con exito"));
        } catch (Exception ex) {
            Logger.getLogger(EmpresaVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
        }
        listaEmpresa = null;
        funcionLimpiar();
        txtNumeroEmpresa.setDisabled(false);

    }
    

    public void funcionEliminar() {
        try {
            Empresa empresa = new Empresa();
            empresa.setNumeroempresa(Integer.parseInt(txtNumeroEmpresa.getValue().toString()));
            logicaEmpresa.eliminarEmpresa(empresa);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "La empresa se eliminó con exito"));
        } catch (Exception ex) {
            Logger.getLogger(EmpresaVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));

        }
        listaEmpresa=null;
        funcionLimpiar();

    }
    public void funcionSeleccionar(SelectEvent event){
        Empresa empresaSeleccionado=(Empresa) event.getObject();
        txtNumeroEmpresa.setValue(empresaSeleccionado.getNumeroempresa());
        txtNombreEmpresa.setValue(empresaSeleccionado.getNombreempresa());
        txtDireccionEmpresa.setValue(empresaSeleccionado.getDireccionempresa());
        txtTelefonoEmpresa.setValue(empresaSeleccionado.getTelefonoempresa());
        txtNumeroEmpresa.setDisabled(true);
        btnRegistra.setDisabled(true);
        btnModificar.setDisabled(false);
        btnEliminar.setDisabled(false);
        
    }

}
